package main

import "github.com/gin-gonic/gin"

/*
net/http库
   做客户端   做服务端
   库里的东西非常丰富  可以不使用框架直接用net/http库启动web服务
   gin在net/http库之上 提供了更模块化的管理，更方便的路由管理
*/

func main() {
	//生成了一个gin实例, 这个实例就是gin.Engine, 实例就是网站的全部内容
	//添加的功能，都要和g实例绑定
	g := gin.Default()
	//绑定路由   "/"  -- 视图函数（匿名函数）
	//gin.Context  封装了 response（响应） 和 request（请求）
	//c   既可以获取客户端传递过来的信息，又可以返回数据给客户端
	g.GET("/", func(c *gin.Context) {
		c.String(200, "hello, world!")
	})
	g.GET("/index", func(c *gin.Context) {
		c.String(200, "this is index for gin!")
	})
	g.POST("/index", index_post)
	g.Run(":8000") //调用底层net/http库 监听端口  默认端口 8080
	//err = http.ListenAndServe(address, engine.Handler())
	/*
		gin 路由管理
		    每一个方法(GET POST DELETE等)都维护一颗树（radix tree），根据url最长前缀来匹配这颗树，最后找到视图处理函数
	*/
}

func index_post(c *gin.Context) {
	c.String(200, "this is post method for gin")
}
